import type { CreateAxiosDefaults } from 'axios'
import axios from 'axios'
import { Message } from '@arco-design/web-vue'
import router from '@/router'

const config: CreateAxiosDefaults = {
  baseURL: '/api',
  timeout: 6000
}

const instance = axios.create(config)


instance.interceptors.request.use((config) => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.set('token', token)
  }
  return config
})


instance.interceptors.response.use(response => {
  const data = response.data
  // 成功
  if (response.status === 200) {
    // 如果没有数据，则表示只是存在操作数据，不存在获取数据，则提示响应内容即可
    if (!data.data) {
      Message.success(data.msg)
    }
    // 无论是否存在操作都要返回
    return data
  }
  return Promise.reject(data)
}, error => {

  const data = error.response.data
  //响应失败
  if (error.status == 401 || data.code == 401) {
    //清除所有缓存
    localStorage.clear()
    //前往登陆页面
    router.push({ path: '/login', replace: true })
    return Promise.reject(data.msg)
  }

  // 其他错误显示
  Message.error(data.msg)
  return Promise.reject(data)
})

export default instance
